/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jforum.actions;

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jforum.DAO.MessageDAO;
import jforum.domain.Message;
import jforum.domain.User;
import jforum.util.AuthModule;
import jforum.util.DBConnector;

/**
 * Действие добавления сообщения
 * @author Вадим
 */
public class PostAction implements Action {

    public String perform(HttpServletRequest request, HttpServletResponse response) throws Exception {
        User user=AuthModule.getUser(request.getCookies());
        if (user!=null) {
            String text=request.getParameter("message");

            // ссылка на родительское сообщение (на которое отвечаем)
            String parent_id = request.getParameter("id");
            int pid=-1;
            if (parent_id!=null) {
                // если это сообщение-ответ
                try {
                    pid=Integer.parseInt(parent_id);
                } catch (NumberFormatException ex) {
                    request.getSession().setAttribute("errorMessage","Id сообщения должно быть натуральным числом.");
                    return ActionNames.error_page;
                }
            } 
            DBConnector conn=DBConnector.getInstance();
            MessageDAO dao=new MessageDAO(conn);
            Date date=new Date();
            Message m = new Message(-1, pid , text, user, date.getTime(), "");
            if (pid!=-1)
                dao.SaveAsDesc(m, pid);
            else
                dao.Save(m);

            text = request.getParameter("display_id");
            if (text==null)
                return ActionNames.view_messages_action;
            return ActionNames.view_message_action+"?id="+text;
        } else {
            request.getSession().setAttribute("errorMessage", "Оставлять сообщения могут только зарегистрированные пользователи.");
            return ActionNames.error_page;
        }
    }

}
